//axios请求二次封装
import axios from "axios";
import store from "@/store/";
// //设置axios为form-data
// axios.defaults.headers.post["Content-Type"] =
//   "application/x-www-form-urlencoded";
// axios.defaults.headers.get["Content-Type"] =
//   "application/x-www-form-urlencoded";
axios.defaults.transformRequest = [
  function(data) {
    let ret = "";
    for (let it in data) {
      ret += encodeURIComponent(it) + "=" + encodeURIComponent(data[it]) + "&";
    }
    return ret;
  }
];
// http request拦截器 添加一个请求拦截器
axios.interceptors.request.use(
  function(config) {
    config.headers['Content-Type'] = 'application/x-www-form-urlencoded'
    let token = window.localStorage.getItem("httpToken") || "";
    if (token && config.url.indexOf("/index/getSignature.do") == -1) {
      config.headers.httptoken = token; //将token放到请求头发送给服务器
      return config;
    } else {
      return config;
    }
  },
  function(error) {
    // Do something with request error
    return Promise.reject(error);
  }
);

/**
 * POST请求
 * @param {请求地址} url
 * @param {请求参数} params
 */
export const post = function(url, params) {
  return request("POST", url, params);
};

/**
 * GET请求
 * @param {请求地址} url
 * @param {请求参数} params
 */
export const get = function(url, params) {
  return request("GET", url, params);
};

/**
 * 网络请求
 * @param {请求方法} method
 * @param {请求地址} url
 * @param {请求参数} params
 */
function request(method, url, params) {
  let data = {};
  if (method == "GET") {
    data = {
      method: method,
      url: url,
      params: params
    };
  } else if (method == "POST") {
    data = {
      // dataType: "json", //数据格式:JSON
      method: method,
      url: url,
      data: params
    };
  }
  return new Promise((resolve, reject) => {
    axios(data)
      .then(res => {
        // //返回数据的操作 可根据后台返回的数据结构自行处理
        if (res.data.errcode == 40101 || res.data.errcode == 40102) {
          store.state.ws && store.state.ws.close();
        } else {
          resolve(res.data);
        }
        // if (res.Flag && ((res && res.Code == 0) || (res && res.error == 0))) {
        //   if (res.Code == 0) {
        //     if (res.Data == undefined || res.Total != undefined) {
        //       resolve(res)
        //     }
        //     resolve(res.Data)
        //   }
        //   if (res.error == 0) {
        //     resolve(res)
        //   }

        //   // if(res.data.count){
        //   //     resolve(res.data)
        //   // }

        // } else {
        //   // if(res.data.code == 10){
        //   //     return router.push('/login')
        //   // }
        //   resolve(false)
        // }
      })
      .catch(err => {
        reject(err);
      });
  });
}

const $axios = {
  post,
  get
};

export default $axios;
